#include <dos.h>
int intdos(inregs, outregs);
union REGS *inregs; значения регистров при вызове
union REGS *outregs; значения регистров при возврате
Описание.
Функция intdos осуществляет выполнение системного вызова MS DOS , который определен значением регистров, объявленных в inregs , и возвращает результат системного вызова в outregs . Аргументы inregs и outregs являются объединениями типа REGS . Тип объединения объявлен в include -файле <dos.h>.
Для осуществления системного вызова intdos выполняет команду INT 21H . Перед выполнением команды функция копирует содержимое inregs в соответствующие регистры. После возврата команды INT , intdos копирует значение текущего регистра в outregs . Она также копирует статус переносимого флага системы в поле cflag , размещенное в outregs . Если это поле является ненулевым, флаг устанавливается системным вызовом и указывает на условие ошибки.
Функция intdos используется для выполнения системных вызовов DOS , которые берут аргументы в регистрах, отличных от DX (DH/DL) и AL , или для системных вызовов, которые определяют ошибки посредством переносимого флага.
Возвращаемое значение.
Функция intdos возвращает значение регистра AX после завершения системного вызова. Если поле cflag в outregs является ненулевым, возникает ошибка и _doserrno устанавливает соответствующий код ошибки.
Пример:
#include <dos.h>
#include <stdio.h>
union REGS inregs, outregs;
.
.
.
/* следующие операторы выбирают текущую дату, используя
шестнадцатеричный вызов функции DOS 2a */
inregs.h.ah=0x2a;
intdos(&inregs,&outregs);
printf("date is %d/%d/%d\n", outregs.h.dh,
outregs.h.dl, outregs.x.cx);